home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / x / volume5 / xview.demos / part04 < prev    next >
Encoding:
Text File  |  1989-12-07  |  58.4 KB  |  1,840 lines

  1. Path: uunet!island!sun.com
  2. From: argv@sun.com (Dan Heller)
  3. Newsgroups: comp.sources.x
  4. Subject: v05i042: XView example programs, Part04/06
  5. Message-ID: <1242@island.uu.net>
  6. Date: 8 Dec 89 07:38:42 GMT
  7. Sender: argv@island.uu.net
  8. Lines: 1829
  9. Approved: island!argv@sun.com
  10.  
  11. Submitted-by: Dan Heller <argv@sun.com>
  12. Posting-number: Volume 5, Issue 42
  13. Archive-name: xview.demos/part04
  14.  
  15.  
  16.  
  17. #! /bin/sh
  18. # This is a shell archive.  Remove anything before this line, then feed it
  19. # into a shell via "sh file" or similar.  To overwrite existing files,
  20. # type "sh file -c".
  21. # The tool that generated this appeared in the comp.sources.unix newsgroup;
  22. # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
  23. # If this archive is complete, you will see the following message at the end:
  24. #        "End of archive 4 (of 6)."
  25. # Contents:  xview.demos/color/cardback.icon xview.demos/color/color.c
  26. #   xview.demos/cursor/hot_spot.c xview.demos/fonts/simple_font.c
  27. #   xview.demos/fonts/type_font.c xview.demos/icons/closed.icon
  28. #   xview.demos/menus/menu.c xview.demos/menus/simple_menu.c
  29. #   xview.demos/menus/xv_menu.c xview.demos/misc/fullscreen.c
  30. #   xview.demos/notice/trigger_notice.c xview.demos/notifier/animate.c
  31. #   xview.demos/panels/Imakefile xview.demos/panels/list_glyphs.c
  32. #   xview.demos/panels/panel_repaint.c
  33. #   xview.demos/seln_svc/seln_line.c
  34. #   xview.demos/seln_svc/simple_seln.c
  35. #   xview.demos/sv_compat/gray_stencil.pr
  36. #   xview.demos/sv_compat/pw_draw.c
  37. # Wrapped by argv@island on Thu Dec  7 23:18:23 1989
  38. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  39. if test -f 'xview.demos/color/cardback.icon' -a "${1}" != "-c" ; then 
  40.   echo shar: Will not clobber existing file \"'xview.demos/color/cardback.icon'\"
  41. else
  42. echo shar: Extracting \"'xview.demos/color/cardback.icon'\" \(2003 characters\)
  43. sed "s/^X//" >'xview.demos/color/cardback.icon' <<'END_OF_FILE'
  44. X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
  45. X * Description: The back of a Sun playing card.
  46. X * Background: White.
  47. X */
  48. X    0x3FFF,0xFFFF,0xFFFF,0xF800,0x7FFF,0xFFFF,0xFFFF,0xFC00,
  49. X    0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
  50. X    0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
  51. X    0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
  52. X    0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
  53. X    0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
  54. X    0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
  55. X    0xC000,0x0038,0x0000,0x0600,0xC000,0x007C,0x0000,0x0600,
  56. X    0xC000,0x00FE,0x0000,0x0600,0xC000,0x00EF,0x0000,0x0600,
  57. X    0xC000,0x02E7,0x8000,0x0600,0xC000,0x0773,0xC000,0x0600,
  58. X    0xC000,0x07B9,0xE000,0x0600,0xC000,0x13DC,0xF000,0x0600,
  59. X    0xC000,0x39EE,0x7800,0x0600,0xC000,0x5CF7,0x3400,0x0600,
  60. X    0xC000,0xEE7B,0x8E00,0x0600,0xC001,0xC73D,0xDC00,0x0600,
  61. X    0xC003,0x9B9E,0xB980,0x0600,0xC007,0x3DCE,0x73C0,0x0600,
  62. X    0xC00E,0x78FE,0xE780,0x0600,0xC01C,0xF77D,0xCF70,0x0600,
  63. X    0xC039,0xEFBB,0x9EF8,0x0600,0xC073,0xDFC7,0x3DFC,0x0600,
  64. X    0xC077,0xB9C7,0x7B9C,0x0600,0xC07F,0x73C7,0xF73C,0x0600,
  65. X    0xC03E,0xE7BB,0xEE78,0x0600,0xC01D,0xCF7D,0xDCF0,0x0600,
  66. X    0xC003,0x9EFE,0x39E0,0x0600,0xC007,0x3CEF,0x73C0,0x0600,
  67. X    0xC002,0x7AE7,0xA780,0x0600,0xC000,0xF773,0xCF00,0x0600,
  68. X    0xC000,0xE3B9,0xEE00,0x0600,0xC000,0x51DC,0xF400,0x0600,
  69. X    0xC000,0x38EE,0x7800,0x0600,0xC000,0x1C77,0x3000,0x0600,
  70. X    0xC000,0x0E3B,0x8000,0x0600,0xC000,0x071D,0xC000,0x0600,
  71. X    0xC000,0x039E,0x8000,0x0600,0xC000,0x01CE,0x0000,0x0600,
  72. X    0xC000,0x00FE,0x0000,0x0600,0xC000,0x007C,0x0000,0x0600,
  73. X    0xC000,0x0038,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
  74. X    0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
  75. X    0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
  76. X    0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
  77. X    0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
  78. X    0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
  79. X    0x7FFF,0xFFFF,0xFFFF,0xFC00,0x3FFF,0xFFFF,0xFFFF,0xF800
  80. END_OF_FILE
  81. if test 2003 -ne `wc -c <'xview.demos/color/cardback.icon'`; then
  82.     echo shar: \"'xview.demos/color/cardback.icon'\" unpacked with wrong size!
  83. fi
  84. # end of 'xview.demos/color/cardback.icon'
  85. fi
  86. if test -f 'xview.demos/color/color.c' -a "${1}" != "-c" ; then 
  87.   echo shar: Will not clobber existing file \"'xview.demos/color/color.c'\"
  88. else
  89. echo shar: Extracting \"'xview.demos/color/color.c'\" \(2990 characters\)
  90. sed "s/^X//" >'xview.demos/color/color.c' <<'END_OF_FILE'
  91. X#include <X11/Xlib.h>
  92. X#include <X11/Xutil.h>
  93. X
  94. Xmain(argc, argv)
  95. Xchar *argv[];
  96. X{
  97. X   Display     *display;
  98. X   int         screen;
  99. X   XSizeHints  sizehints;      
  100. X   Window      window;
  101. X   XEvent      event;
  102. X   XButtonEvent *button;
  103. X   XColormapEvent *colormap;
  104. X   short    i;
  105. X   int         done = 0;
  106. X   Colormap    cmap, orig_cmap;
  107. X   XVisualInfo   vTemplate, *visualList;
  108. X   int          visualsMatched;
  109. X   Visual       *visual;
  110. X   XSetWindowAttributes atts;
  111. X   XColor      color;
  112. X
  113. X   display = XOpenDisplay("");
  114. X   screen = DefaultScreen ( display );
  115. X   window = XDefaultRootWindow(display);
  116. X
  117. X   vTemplate.screen = screen;
  118. X   vTemplate.depth = 8;
  119. X   vTemplate.class = PseudoColor;
  120. X   visualList = XGetVisualInfo(display, 
  121. X      VisualScreenMask|VisualClassMask|VisualDepthMask,
  122. X      &vTemplate, &visualsMatched);
  123. X   if ( visualsMatched == 0 ) {
  124. X      puts("visual not found, using default");
  125. X      visual = DefaultVisual( display, screen );
  126. X   } else {
  127. X      printf("found %d visuals\n", visualsMatched);
  128. X      visual = visualList[0].visual;
  129. X   }
  130. X
  131. X   sizehints.x = 200;
  132. X   sizehints.y = 0;
  133. X   sizehints.width = sizehints.height = 150;
  134. X   sizehints.flags = USSize | USPosition;
  135. X
  136. X   cmap = XCreateColormap( display,window, visual, AllocAll);
  137. X   orig_cmap = DefaultColormap(display, DefaultScreen(display));
  138. X   atts.colormap = cmap;
  139. X
  140. X   window = XCreateWindow(display,DefaultRootWindow(display), 
  141. X            sizehints.x, sizehints.y, sizehints.width, sizehints.height,
  142. X        0, 8, InputOutput, visual, CWColormap, &atts);
  143. X
  144. X   XSetStandardProperties(display, window, argv[0],
  145. X              argv[0], None, argv, 1, &sizehints);
  146. X
  147. X   color.flags = DoRed|DoGreen|DoBlue;
  148. X   srandom(time(0));
  149. X   printf("Allocating %d colors\n", visual->map_entries);
  150. X   for (color.pixel=0; color.pixel < visual->map_entries; color.pixel++) {
  151. X      color.red =   random()%65536;
  152. X      color.green = random()%65536;
  153. X      color.blue =  random()%65536;
  154. X      XStoreColor ( display, cmap, &color );
  155. X   }
  156. X
  157. X   while (visualsMatched > 0)
  158. X       XFree(visualList[--visualsMatched]);
  159. X
  160. X   /*  Now that the screen is defined, select inputs and get them  */
  161. X   XSelectInput(display, window, ButtonPressMask | ColormapChangeMask);
  162. X   XMapWindow(display, window);
  163. X
  164. X   do {
  165. X      XNextEvent ( display, &event );
  166. X      switch (event.type) {
  167. X      case ButtonPress:
  168. X         printf ("*********  Found ButtonPress event ********\n");
  169. X         button = (XButtonEvent *) &event;
  170. X         printf ("button is %d\n", button->button );
  171. X         if (button->button == 3)
  172. X            done = -1;
  173. X         break;
  174. X      case ColormapNotify:
  175. X         printf ("*********  Found ColormapNotify event ********\n");
  176. X         colormap = (XColormapEvent *) &event;
  177. X         if ( colormap->state == ColormapInstalled )
  178. X         printf ("Colormap has been installed\n");
  179. X         else 
  180. X         printf ("Colormap has been uninstalled\n");
  181. X         printf ("Colormap is %d\n", colormap->colormap );
  182. X         printf ("Associated window is %d\n", colormap->window );
  183. X      }
  184. X   } while (!done);
  185. X   XCloseDisplay(display);
  186. X}
  187. END_OF_FILE
  188. if test 2990 -ne `wc -c <'xview.demos/color/color.c'`; then
  189.     echo shar: \"'xview.demos/color/color.c'\" unpacked with wrong size!
  190. fi
  191. # end of 'xview.demos/color/color.c'
  192. fi
  193. if test -f 'xview.demos/cursor/hot_spot.c' -a "${1}" != "-c" ; then 
  194.   echo shar: Will not clobber existing file \"'xview.demos/cursor/hot_spot.c'\"
  195. else
  196. echo shar: Extracting \"'xview.demos/cursor/hot_spot.c'\" \(3094 characters\)
  197. sed "s/^X//" >'xview.demos/cursor/hot_spot.c' <<'END_OF_FILE'
  198. X/*
  199. X * hot_spot.c -- create a cursor and query it's position on the 
  200. X * screen and in the panel's window.
  201. X * Our own function, create_cursor(), attaches a new cursor to the
  202. X * window parameter passed into the function.
  203. X */
  204. X#include <X11/X.h>
  205. X#include <X11/Xlib.h>           /* for the xlib graphics */
  206. X#include <xview/xview.h>
  207. X#include <xview/panel.h>
  208. X#include <xview/cursor.h>
  209. X#include <xview/svrimage.h>
  210. X
  211. Xmain(argc, argv)
  212. Xint argc;
  213. Xchar *argv[];
  214. X{
  215. X    Frame       frame;
  216. X    Panel       panel;
  217. X    void        do_it();
  218. X
  219. X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
  220. X
  221. X    /*
  222. X     * Create a base frame, a panel, and a panel button.
  223. X     */
  224. X    frame = (Frame)xv_create(XV_NULL, FRAME, NULL);
  225. X    panel = (Panel)xv_create(frame, PANEL, NULL);
  226. X    create_cursor(xv_get(panel, CANVAS_NTH_PAINT_WINDOW, 0));
  227. X    (void) xv_create(panel, PANEL_BUTTON,
  228. X        PANEL_LABEL_STRING,     "Push Me",
  229. X        PANEL_NOTIFY_PROC,      do_it,
  230. X        NULL);
  231. X
  232. X    window_fit(panel);
  233. X    window_fit(frame);
  234. X    window_main_loop(frame);
  235. X}
  236. X
  237. X/*
  238. X * when user selects the panel button, the current mouse location is
  239. X * printed relative to the panel's window and to the screen.
  240. X * This location is governed by the hot spot on the cursor.
  241. X */
  242. Xvoid
  243. Xdo_it(item, event)
  244. X{
  245. X    Rect *r;
  246. X    Panel panel = (Panel)xv_get(item, PANEL_PARENT_PANEL);
  247. X
  248. X    r = (Rect *)xv_get(xv_get(panel, XV_ROOT), WIN_MOUSE_XY);
  249. X    printf("Root window: %d %d\n", r->r_left, r->r_top);
  250. X    r = (Rect *)xv_get(xv_get(panel, CANVAS_NTH_PAINT_WINDOW, 0), WIN_MOUSE_XY);
  251. X    printf("Panel window: %d %d\n", r->r_left, r->r_top);
  252. X}
  253. X
  254. X/*
  255. X * create_cursor() creates a bull's eye cursor and assigns it
  256. X * to the window (parameter).
  257. X */
  258. Xcreate_cursor(window)
  259. XXv_Window window;
  260. X{
  261. X    Xv_Cursor      cursor;
  262. X    Server_image   image;
  263. X    Pixmap         pixmap;
  264. X    Display        *dpy = (Display *)xv_get(window, XV_DISPLAY);
  265. X    GC             gc;
  266. X    XGCValues      gcvalues;
  267. X
  268. X    image = (Server_image)xv_create(XV_NULL, SERVER_IMAGE,
  269. X        XV_WIDTH,       16,
  270. X        XV_HEIGHT,      16,
  271. X        NULL);
  272. X    pixmap = (Pixmap)xv_get(image, XV_XID);
  273. X    /* Create GC with reversed foreground and background colors to
  274. X     * clear pixmap first.  Use 1 and 0 because pixmap is 1-bit deep.
  275. X     */
  276. X    gcvalues.foreground = 0;
  277. X    gcvalues.background = 1;
  278. X    gc = XCreateGC(dpy, pixmap, GCForeground|GCBackground, &gcvalues);
  279. X    XFillRectangle(dpy, pixmap, gc, 0, 0, 16, 16);
  280. X    /*
  281. X     * Reset foreground and background values for XDrawArc() routines.
  282. X     */
  283. X    gcvalues.foreground = 1;
  284. X    gcvalues.background = 0;
  285. X    XChangeGC(dpy, gc, GCForeground | GCBackground, &gcvalues);
  286. X    XDrawArc(dpy, pixmap, gc, 2, 2, 12, 12, 0, 360 * 64);
  287. X    XDrawArc(dpy, pixmap, gc, 6, 6, 4, 4, 0, 360 * 64);
  288. X
  289. X    /* Creaste cursor and assign it to the window (parameter) */
  290. X    cursor = xv_create(XV_NULL, CURSOR,
  291. X        CURSOR_IMAGE,   image,
  292. X        CURSOR_XHOT,    7,
  293. X        CURSOR_YHOT,    7,
  294. X        NULL);
  295. X    xv_set(window, WIN_CURSOR, cursor, NULL);
  296. X
  297. X    /* free the GC -- the cursor and the image must not be freed. */
  298. X    XFreeGC(dpy, gc);
  299. X}
  300. END_OF_FILE
  301. if test 3094 -ne `wc -c <'xview.demos/cursor/hot_spot.c'`; then
  302.     echo shar: \"'xview.demos/cursor/hot_spot.c'\" unpacked with wrong size!
  303. fi
  304. # end of 'xview.demos/cursor/hot_spot.c'
  305. fi
  306. if test -f 'xview.demos/fonts/simple_font.c' -a "${1}" != "-c" ; then 
  307.   echo shar: Will not clobber existing file \"'xview.demos/fonts/simple_font.c'\"
  308. else
  309. echo shar: Extracting \"'xview.demos/fonts/simple_font.c'\" \(2446 characters\)
  310. sed "s/^X//" >'xview.demos/fonts/simple_font.c' <<'END_OF_FILE'
  311. X/*
  312. X * simple_font.c -- very simple program showing how to render text
  313. X * using a font gotten from xv_find().  Hello World is printed in
  314. X * the top-left corner of a canvas window.
  315. X */
  316. X#include <stdio.h>
  317. X#include <X11/X.h>
  318. X#include <X11/Xlib.h>   /* X.h and Xlib.h used for Xlib graphics */
  319. X#include <xview/xview.h>
  320. X#include <xview/canvas.h>
  321. X#include <xview/font.h>
  322. X#include <xview/xv_xrect.h>
  323. X
  324. X#define GC_KEY  10 /* any arbitrary number -- used for XV_KEY_DATA */
  325. X
  326. Xmain(argc, argv)
  327. Xint     argc;
  328. Xchar    *argv[];
  329. X{
  330. X    Frame       frame;
  331. X    Canvas      canvas;
  332. X    XGCValues   gcvalues;
  333. X    Xv_Font     font;
  334. X    void        my_repaint_proc();
  335. X    Display     *dpy;
  336. X    GC          gc;
  337. X
  338. X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
  339. X
  340. X    frame = (Frame)xv_create(XV_NULL, FRAME, NULL);
  341. X
  342. X    canvas = (Canvas)xv_create(frame, CANVAS,
  343. X        XV_WIDTH,               400,
  344. X        XV_HEIGHT,              200,
  345. X        CANVAS_X_PAINT_WINDOW,  TRUE,
  346. X        CANVAS_REPAINT_PROC,    my_repaint_proc,
  347. X        NULL);
  348. X    window_fit(frame);
  349. X
  350. X    dpy = (Display *)xv_get(frame, XV_DISPLAY);
  351. X    font = (Xv_Font)xv_find(frame, FONT, FONT_NAME, "courier", NULL);
  352. X    if (!font) {
  353. X        fprintf(stderr, "%s: cannot use font: courier.\n", argv[0]);
  354. X        font = (Xv_Font)xv_get(frame, XV_FONT);
  355. X    }
  356. X
  357. X    /* Create a GC to use with Xlib graphics -- set the fg/bg colors
  358. X     * and set the Font, which is the XV_XID of the XView font object.
  359. X     */
  360. X    gcvalues.font = (Font)xv_get(font, XV_XID);
  361. X    gcvalues.foreground = BlackPixel(dpy, DefaultScreen(dpy));
  362. X    gcvalues.background = WhitePixel(dpy, DefaultScreen(dpy));
  363. X    gcvalues.graphics_exposures = False;
  364. X    gc = XCreateGC(dpy, RootWindow(dpy, DefaultScreen(dpy)),
  365. X        GCForeground | GCBackground | GCFont | GCGraphicsExposures,
  366. X        &gcvalues);
  367. X
  368. X    /* Assign the gc to the canvas object so we can use the same gc
  369. X     * each time we draw into the canvas.  Also avoids a global
  370. X     * variable to store the GC.
  371. X     */
  372. X    xv_set(canvas, XV_KEY_DATA, GC_KEY, gc, NULL);
  373. X    xv_main_loop(frame);
  374. X}
  375. X
  376. X/*
  377. X * Called every time the window needs repainting.
  378. X */
  379. Xvoid
  380. Xmy_repaint_proc(canvas, pw, dpy, xwin, xrects)
  381. XCanvas          canvas;
  382. XXv_Window       pw;
  383. XDisplay         *dpy;
  384. XWindow          xwin;
  385. XXv_xrectlist    *xrects;
  386. X{
  387. X    GC gc = (GC)xv_get(canvas, XV_KEY_DATA, GC_KEY);
  388. X
  389. X    XDrawString(dpy, xwin, gc, 10, 20,
  390. X        "Hello World", 11); /* 11 = strlen("Hello World") */
  391. X}
  392. END_OF_FILE
  393. if test 2446 -ne `wc -c <'xview.demos/fonts/simple_font.c'`; then
  394.     echo shar: \"'xview.demos/fonts/simple_font.c'\" unpacked with wrong size!
  395. fi
  396. # end of 'xview.demos/fonts/simple_font.c'
  397. fi
  398. if test -f 'xview.demos/fonts/type_font.c' -a "${1}" != "-c" ; then 
  399.   echo shar: Will not clobber existing file \"'xview.demos/fonts/type_font.c'\"
  400. else
  401. echo shar: Extracting \"'xview.demos/fonts/type_font.c'\" \(2710 characters\)
  402. sed "s/^X//" >'xview.demos/fonts/type_font.c' <<'END_OF_FILE'
  403. X/*
  404. X * simple_font.c -- very simple program showing how to render text
  405. X * using fonts loaded by XView.
  406. X */
  407. X#include <ctype.h>
  408. X#include <X11/X.h>
  409. X#include <X11/Xlib.h>
  410. X#include <xview/xview.h>
  411. X#include <xview/panel.h>
  412. X#include <xview/font.h>
  413. X
  414. XDisplay *dpy;
  415. XGC      gc;
  416. XXFontStruct *font_info;
  417. X
  418. Xmain(argc, argv)
  419. Xint     argc;
  420. Xchar    *argv[];
  421. X{
  422. X    Frame       frame;
  423. X    Panel       panel;
  424. X    Canvas      canvas;
  425. X    XGCValues   gcvalues;
  426. X    Xv_Font     font;
  427. X    void        my_event_proc();
  428. X    extern void exit();
  429. X
  430. X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
  431. X
  432. X    frame = (Frame)xv_create(XV_NULL, FRAME,
  433. X        FRAME_LABEL,            argv[0],
  434. X        NULL);
  435. X
  436. X    panel = (Panel)xv_create(frame, PANEL,
  437. X        PANEL_LAYOUT,           PANEL_VERTICAL,
  438. X        NULL);
  439. X    xv_create(panel, PANEL_BUTTON,
  440. X        PANEL_LABEL_STRING,     "Quit",
  441. X        PANEL_NOTIFY_PROC,      exit,
  442. X        NULL);
  443. X    window_fit(panel);
  444. X
  445. X    canvas = (Canvas)xv_create(frame, CANVAS,
  446. X        XV_WIDTH,               400,
  447. X        XV_HEIGHT,              200,
  448. X        CANVAS_X_PAINT_WINDOW,  TRUE,
  449. X        NULL);
  450. X    xv_set(canvas_paint_window(canvas),
  451. X        WIN_EVENT_PROC,         my_event_proc,
  452. X        NULL);
  453. X
  454. X    window_fit(frame);
  455. X
  456. X    dpy = (Display *)xv_get(frame, XV_DISPLAY);
  457. X    font = (Xv_Font)xv_get(frame, XV_FONT);
  458. X    font_info = (XFontStruct *)xv_get(font, FONT_INFO);
  459. X
  460. X    gcvalues.font = (Font)xv_get(font, XV_XID);
  461. X    gcvalues.foreground = BlackPixel(dpy, DefaultScreen(dpy));
  462. X    gcvalues.background = WhitePixel(dpy, DefaultScreen(dpy));
  463. X    gcvalues.graphics_exposures = False;
  464. X    gc = XCreateGC(dpy, RootWindow(dpy, DefaultScreen(dpy)),
  465. X        GCForeground | GCBackground | GCFont | GCGraphicsExposures, &gcvalues);
  466. X
  467. X    xv_main_loop(frame);
  468. X}
  469. X
  470. Xvoid
  471. Xmy_event_proc(win, event)
  472. XXv_Window win;
  473. XEvent *event;
  474. X{
  475. X    static int x = 10, y = 10;
  476. X    Window xwin = (Window)xv_get(win, XV_XID);
  477. X    char c;
  478. X
  479. X    if (event_is_up(event))
  480. X        return;
  481. X
  482. X    if (event_is_ascii(event)) {
  483. X        c = (char)event_id(event);
  484. X        if (c == '\n' || c == '\r') {
  485. X            y += font_info->max_bounds.ascent +
  486. X                        font_info->max_bounds.descent;
  487. X            x = 10;
  488. X        } else if (c == 7 || c == 127) { /* backspace or delete */
  489. X            if (x > 10)
  490. X                x -= XTextWidth(font_info, "m", 1);
  491. X            /* use XDrawImageString to overwrite previous text */
  492. X            XDrawImageString(dpy, xwin, gc, x, y, "  ", 2);
  493. X        } else {
  494. X            XDrawString(dpy, xwin, gc, x, y, &c, 1);
  495. X            x += XTextWidth(font_info, &c, 1);
  496. X        }
  497. X    } else if (event_action(event) == ACTION_SELECT) {
  498. X        x = event_x(event);
  499. X        y = event_y(event);
  500. X    }
  501. X}
  502. END_OF_FILE
  503. if test 2710 -ne `wc -c <'xview.demos/fonts/type_font.c'`; then
  504.     echo shar: \"'xview.demos/fonts/type_font.c'\" unpacked with wrong size!
  505. fi
  506. # end of 'xview.demos/fonts/type_font.c'
  507. fi
  508. if test -f 'xview.demos/icons/closed.icon' -a "${1}" != "-c" ; then 
  509.   echo shar: Will not clobber existing file \"'xview.demos/icons/closed.icon'\"
  510. else
  511. echo shar: Extracting \"'xview.demos/icons/closed.icon'\" \(1933 characters\)
  512. sed "s/^X//" >'xview.demos/icons/closed.icon' <<'END_OF_FILE'
  513. X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
  514. X */
  515. X    0x0000,0x0000,0x0000,0x0000,0x00FF,0xFFFF,0xFFFF,0xFF00,
  516. X    0x0080,0x0000,0x0000,0x0100,0x009F,0xFFFF,0xFFFF,0xF900,
  517. X    0x0090,0x0002,0x4000,0x0900,0x0090,0x0002,0x4000,0x0900,
  518. X    0x0090,0x0002,0x4000,0x0900,0x0090,0x0042,0x4000,0x0900,
  519. X    0x0090,0x1082,0x4021,0x0900,0x0090,0x2102,0x4042,0x0900,
  520. X    0x0090,0x4202,0x4084,0x0900,0x0090,0x8402,0x4108,0x0900,
  521. X    0x0091,0x0802,0x4210,0x0900,0x0090,0x1042,0x4020,0x8900,
  522. X    0x0090,0x2082,0x4041,0x0900,0x0090,0x4102,0x4082,0x0900,
  523. X    0x0090,0x8202,0x4104,0x0900,0x0091,0x0402,0x4208,0x0900,
  524. X    0x0090,0x0802,0x4010,0x0900,0x0090,0x0002,0x4000,0x0900,
  525. X    0x0090,0x0002,0x4000,0x0900,0x0090,0x0002,0x4000,0x0900,
  526. X    0x0090,0x0002,0x4000,0x0900,0x0090,0x0002,0x4000,0x0900,
  527. X    0x0090,0x0002,0x4000,0x0900,0x009F,0xFFFE,0x7FFF,0xF900,
  528. X    0x0090,0x0000,0x0000,0x0900,0x0090,0x0000,0x0000,0x0900,
  529. X    0x009F,0xFFFE,0x7FFF,0xF900,0x0090,0x0002,0x4000,0x0900,
  530. X    0x0090,0x0002,0x4000,0x0900,0x0090,0x0002,0x4000,0x0900,
  531. X    0x0090,0x2002,0x4000,0x0900,0x0090,0x4082,0x4104,0x0900,
  532. X    0x0090,0x8102,0x4208,0x0900,0x0091,0x0202,0x4410,0x0900,
  533. X    0x0092,0x0402,0x4820,0x0900,0x0090,0x0802,0x4042,0x0900,
  534. X    0x0090,0x1042,0x4084,0x0900,0x0090,0x2082,0x4108,0x0900,
  535. X    0x0090,0x4102,0x4210,0x0900,0x0090,0x8202,0x4420,0x0900,
  536. X    0x0091,0x0002,0x4800,0x0900,0x0090,0x0002,0x4000,0x0900,
  537. X    0x0090,0x0002,0x4000,0x0900,0x0090,0x0002,0x4000,0x0900,
  538. X    0x009F,0xFFFF,0xFFFF,0xF900,0x0090,0x0000,0x0000,0x0900,
  539. X    0x0090,0x001F,0xF800,0x0900,0x0090,0x001F,0xF800,0x0900,
  540. X    0x0090,0x0000,0x0000,0x0900,0x009F,0xFFFF,0xFFFF,0xF900,
  541. X    0x0080,0x0000,0x0000,0x0100,0x0080,0x0000,0x0000,0x0100,
  542. X    0x00FF,0xFFFF,0xFFFF,0xFF00,0x0000,0x0000,0x0000,0x0000,
  543. X    0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
  544. X    0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
  545. X    0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
  546. X    0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
  547. END_OF_FILE
  548. if test 1933 -ne `wc -c <'xview.demos/icons/closed.icon'`; then
  549.     echo shar: \"'xview.demos/icons/closed.icon'\" unpacked with wrong size!
  550. fi
  551. # end of 'xview.demos/icons/closed.icon'
  552. fi
  553. if test -f 'xview.demos/menus/menu.c' -a "${1}" != "-c" ; then 
  554.   echo shar: Will not clobber existing file \"'xview.demos/menus/menu.c'\"
  555. else
  556. echo shar: Extracting \"'xview.demos/menus/menu.c'\" \(2412 characters\)
  557. sed "s/^X//" >'xview.demos/menus/menu.c' <<'END_OF_FILE'
  558. X/*
  559. X * xv_menu.c -
  560. X *      Demonstrate the use of an XView menu in a canvas subwindow.
  561. X *      Menu is brought up with right mouse button and displays
  562. X *      choice made in the canvas.  Allow menu to be pinned.
  563. X */
  564. X#include <xview/xview.h>
  565. X#include <xview/canvas.h>
  566. X
  567. XFrame   frame;
  568. X
  569. Xmain(argc,argv)
  570. Xint     argc;
  571. Xchar    *argv[];
  572. X{
  573. X    Canvas      canvas;
  574. X    Menu        menu;
  575. X    void        my_notify_proc(), my_event_proc();
  576. X    extern void exit();
  577. X
  578. X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
  579. X
  580. X    frame = (Frame)xv_create(NULL, FRAME,
  581. X        FRAME_LABEL,    argv[0],
  582. X        NULL);
  583. X    canvas = (Canvas)xv_create(frame, CANVAS,
  584. X        XV_WIDTH,       300,
  585. X        XV_HEIGHT,      200,
  586. X        NULL);
  587. X    menu = (Menu)xv_create(NULL, MENU,
  588. X        MENU_TITLE_ITEM,        "Junk",
  589. X        MENU_STRINGS,           "Yes", "No", "Maybe", NULL,
  590. X        MENU_NOTIFY_PROC,       my_notify_proc,
  591. X        MENU_ITEM,
  592. X            MENU_STRING,        "Save",
  593. X            MENU_NOTIFY_PROC,   my_notify_proc,
  594. X            MENU_PULLRIGHT,
  595. X                xv_create(canvas, MENU,
  596. X                    MENU_GEN_PIN_WINDOW,        frame, "Save",
  597. X                    MENU_ITEM,
  598. X                        MENU_STRING,            "Update Changes",
  599. X                        MENU_NOTIFY_PROC,       my_notify_proc,
  600. X                        NULL,
  601. X                    NULL),
  602. X            NULL,
  603. X        MENU_ITEM,
  604. X            MENU_STRING,        "Quit",
  605. X            MENU_NOTIFY_PROC,   exit,
  606. X            NULL,
  607. X        NULL);
  608. X
  609. X    xv_set(canvas_paint_window(canvas),
  610. X        WIN_CONSUME_EVENTS,     WIN_MOUSE_BUTTONS, NULL,
  611. X        WIN_EVENT_PROC,         my_event_proc,
  612. X        /* associate the menu to the canvas win so we can retreive it easily */
  613. X        WIN_CLIENT_DATA,        menu,
  614. X        NULL);
  615. X
  616. X    window_fit(frame);
  617. X    window_main_loop(frame);
  618. X}
  619. X
  620. X/*
  621. X * my_notify_proc - Display menu selection in frame header.
  622. X */
  623. Xvoid
  624. Xmy_notify_proc(menu, menu_item)
  625. XMenu menu;
  626. XMenu_item menu_item;
  627. X{
  628. X    xv_set(frame,
  629. X        FRAME_LABEL,    xv_get(menu_item, MENU_STRING),
  630. X        NULL);
  631. X}
  632. X
  633. X/*
  634. X * my_event_proc - Call menu_show() to display menu on right mouse button push.
  635. X */
  636. Xvoid
  637. Xmy_event_proc(window, event)
  638. XXv_Window window;
  639. XEvent *event;
  640. X{
  641. X    if (event_action(event) == ACTION_MENU && event_is_down(event)) {
  642. X        Menu menu = (Menu)xv_get(window, WIN_CLIENT_DATA);
  643. X        menu_show(menu, window, event, NULL);
  644. X    }
  645. X}
  646. END_OF_FILE
  647. if test 2412 -ne `wc -c <'xview.demos/menus/menu.c'`; then
  648.     echo shar: \"'xview.demos/menus/menu.c'\" unpacked with wrong size!
  649. fi
  650. # end of 'xview.demos/menus/menu.c'
  651. fi
  652. if test -f 'xview.demos/menus/simple_menu.c' -a "${1}" != "-c" ; then 
  653.   echo shar: Will not clobber existing file \"'xview.demos/menus/simple_menu.c'\"
  654. else
  655. echo shar: Extracting \"'xview.demos/menus/simple_menu.c'\" \(2248 characters\)
  656. sed "s/^X//" >'xview.demos/menus/simple_menu.c' <<'END_OF_FILE'
  657. X/*
  658. X * simple_menu.c -
  659. X * Demonstrate the use of an XView menu in a canvas subwindow.
  660. X * A Menu is brought up with the MENU mouse button.  The choices
  661. X * in the menu toggle the display of the scrollbar next to the canvas.
  662. X */
  663. X#include <xview/xview.h>
  664. X#include <xview/canvas.h>
  665. X#include <xview/scrollbar.h>
  666. X
  667. X#define SCROLLBAR_KEY   100
  668. X#define MENU_KEY        200
  669. X
  670. Xmain(argc,argv)
  671. Xint     argc;
  672. Xchar    *argv[];
  673. X{
  674. X    Frame       frame;
  675. X    Canvas      canvas;
  676. X    Scrollbar   scrollbar;
  677. X    Menu        menu;
  678. X    void        menu_notify_proc(), pw_event_proc();
  679. X
  680. X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
  681. X
  682. X    /*
  683. X     *  Create a frame, canvas and menu.
  684. X     *  A canvas receives input in its canvas_paint_window().
  685. X     */
  686. X    frame = (Frame)xv_create(NULL, FRAME,
  687. X        FRAME_LABEL,    argv[0],
  688. X        NULL);
  689. X    canvas = (Canvas)xv_create(frame, CANVAS,
  690. X        XV_WIDTH,       300,
  691. X        XV_HEIGHT,      200,
  692. X        NULL);
  693. X    scrollbar = (Scrollbar)xv_create(canvas, SCROLLBAR,
  694. X        SCROLLBAR_DIRECTION,    SCROLLBAR_VERTICAL,
  695. X        NULL);
  696. X
  697. X    menu = (Menu)xv_create(canvas, MENU,
  698. X        MENU_TITLE_ITEM,        "Scrollbar",
  699. X        MENU_STRINGS,           "On", "Off", NULL,
  700. X        MENU_NOTIFY_PROC,       menu_notify_proc,
  701. X        XV_KEY_DATA,            SCROLLBAR_KEY, scrollbar,
  702. X        NULL);
  703. X
  704. X    xv_set(canvas_paint_window(canvas),
  705. X        WIN_EVENT_PROC,         pw_event_proc,
  706. X        XV_KEY_DATA,            MENU_KEY, menu,
  707. X        NULL);
  708. X
  709. X    window_fit(frame);
  710. X    window_main_loop(frame);
  711. X}
  712. X
  713. X/*
  714. X * menu_notify_proc - toggle the display of the scrollbar
  715. X * based on which menu item was chosen.
  716. X */
  717. Xvoid
  718. Xmenu_notify_proc(menu, menu_item)
  719. XMenu menu;
  720. XMenu_item menu_item;
  721. X{
  722. X    char *menu_choice = (char *)xv_get(menu_item, MENU_STRING);
  723. X    int show_it = !strcmp(menu_choice, "On");
  724. X
  725. X    xv_set(xv_get(menu, XV_KEY_DATA, SCROLLBAR_KEY),
  726. X        XV_SHOW,        show_it,
  727. X        NULL);
  728. X}
  729. X
  730. X/*
  731. X * Call menu_show() to display menu.
  732. X */
  733. Xvoid
  734. Xpw_event_proc(canvas_pw, event)
  735. XXv_Window       canvas_pw;
  736. XEvent *event;
  737. X{
  738. X    if (event_action(event) == ACTION_MENU && event_is_down(event)) {
  739. X        Menu menu = (Menu)xv_get(canvas_pw, XV_KEY_DATA, MENU_KEY);
  740. X        menu_show(menu, canvas_pw, event, NULL);
  741. X    }
  742. X}
  743. END_OF_FILE
  744. if test 2248 -ne `wc -c <'xview.demos/menus/simple_menu.c'`; then
  745.     echo shar: \"'xview.demos/menus/simple_menu.c'\" unpacked with wrong size!
  746. fi
  747. # end of 'xview.demos/menus/simple_menu.c'
  748. fi
  749. if test -f 'xview.demos/menus/xv_menu.c' -a "${1}" != "-c" ; then 
  750.   echo shar: Will not clobber existing file \"'xview.demos/menus/xv_menu.c'\"
  751. else
  752. echo shar: Extracting \"'xview.demos/menus/xv_menu.c'\" \(2427 characters\)
  753. sed "s/^X//" >'xview.demos/menus/xv_menu.c' <<'END_OF_FILE'
  754. X/*
  755. X * xv_menu.c -
  756. X *      Demonstrate the use of an XView menu in a canvas subwindow.
  757. X *      Menu is brought up with right mouse button and the selected
  758. X *      choice is displayed in the canvas.  Allows menu to be pinned.
  759. X */
  760. X#include <xview/xview.h>
  761. X#include <xview/canvas.h>
  762. X
  763. XFrame   frame;
  764. X
  765. Xmain(argc,argv)
  766. Xint     argc;
  767. Xchar    *argv[];
  768. X{
  769. X    Canvas      canvas;
  770. X    Menu        menu;
  771. X    void        my_notify_proc(), my_event_proc();
  772. X    extern void exit();
  773. X
  774. X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
  775. X
  776. X    frame = (Frame)xv_create(NULL, FRAME,
  777. X        FRAME_LABEL,    argv[0],
  778. X        NULL);
  779. X    canvas = (Canvas)xv_create(frame, CANVAS,
  780. X        XV_WIDTH,       300,
  781. X        XV_HEIGHT,      200,
  782. X        NULL);
  783. X    menu = (Menu)xv_create(NULL, MENU,
  784. X        MENU_TITLE_ITEM,        "Junk",
  785. X        MENU_STRINGS,           "Yes", "No", "Maybe", NULL,
  786. X        MENU_NOTIFY_PROC,       my_notify_proc,
  787. X        MENU_ITEM,
  788. X            MENU_STRING,        "Save",
  789. X            MENU_NOTIFY_PROC,   my_notify_proc,
  790. X            MENU_PULLRIGHT,
  791. X                xv_create(canvas, MENU,
  792. X                    MENU_GEN_PIN_WINDOW,        frame, "Save",
  793. X                    MENU_ITEM,
  794. X                        MENU_STRING,            "Update Changes",
  795. X                        MENU_NOTIFY_PROC,       my_notify_proc,
  796. X                        NULL,
  797. X                    NULL),
  798. X            NULL,
  799. X        MENU_ITEM,
  800. X            MENU_STRING,        "Quit",
  801. X            MENU_NOTIFY_PROC,   exit,
  802. X            NULL,
  803. X        NULL);
  804. X
  805. X    xv_set(canvas_paint_window(canvas),
  806. X        WIN_CONSUME_EVENTS,     WIN_MOUSE_BUTTONS, NULL,
  807. X        WIN_EVENT_PROC,         my_event_proc,
  808. X        /* associate the menu to the canvas win so we can retrieve it easily */
  809. X        WIN_CLIENT_DATA,        menu,
  810. X        NULL);
  811. X
  812. X    window_fit(frame);
  813. X    window_main_loop(frame);
  814. X}
  815. X
  816. X/*
  817. X * my_notify_proc - Display menu selection in frame header.
  818. X */
  819. Xvoid
  820. Xmy_notify_proc(menu, menu_item)
  821. XMenu menu;
  822. XMenu_item menu_item;
  823. X{
  824. X    xv_set(frame,
  825. X        FRAME_LABEL,    xv_get(menu_item, MENU_STRING),
  826. X        NULL);
  827. X}
  828. X
  829. X/*
  830. X * my_event_proc - Call menu_show() to display menu on right mouse button push.
  831. X */
  832. Xvoid
  833. Xmy_event_proc(window, event)
  834. XXv_Window window;
  835. XEvent *event;
  836. X{
  837. X    if (event_action(event) == ACTION_MENU && event_is_down(event)) {
  838. X        Menu menu = (Menu)xv_get(window, WIN_CLIENT_DATA);
  839. X        menu_show(menu, window, event, NULL);
  840. X    }
  841. X}
  842. X
  843. X
  844. END_OF_FILE
  845. if test 2427 -ne `wc -c <'xview.demos/menus/xv_menu.c'`; then
  846.     echo shar: \"'xview.demos/menus/xv_menu.c'\" unpacked with wrong size!
  847. fi
  848. # end of 'xview.demos/menus/xv_menu.c'
  849. fi
  850. if test -f 'xview.demos/misc/fullscreen.c' -a "${1}" != "-c" ; then 
  851.   echo shar: Will not clobber existing file \"'xview.demos/misc/fullscreen.c'\"
  852. else
  853. echo shar: Extracting \"'xview.demos/misc/fullscreen.c'\" \(2150 characters\)
  854. sed "s/^X//" >'xview.demos/misc/fullscreen.c' <<'END_OF_FILE'
  855. X/*
  856. X * fullscreen.c
  857. X * Demonstrate the fullscreen package.  Create a panel button that
  858. X * creates a fullscreen instance, thus grabbing the X server.  User
  859. X * presses a mouse button to release the server.
  860. X */
  861. X#include <xview/xview.h>
  862. X#include <xview/panel.h>
  863. X#include <xview/fullscreen.h>
  864. X
  865. Xmain(argc, argv)
  866. Xchar *argv[];
  867. X{
  868. X    Frame       frame;
  869. X    Panel       panel;
  870. X    void        exit(), grab();
  871. X
  872. X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
  873. X
  874. X    frame = (Frame)xv_create(XV_NULL, FRAME, NULL);
  875. X    panel = (Panel)xv_create(frame, PANEL, NULL);
  876. X    (void) xv_create(panel, PANEL_BUTTON,
  877. X        PANEL_LABEL_STRING,     "Quit",
  878. X        PANEL_NOTIFY_PROC,      exit,
  879. X        NULL);
  880. X    (void) xv_create(panel, PANEL_BUTTON,
  881. X        PANEL_LABEL_STRING,     "Fullscreen",
  882. X        PANEL_NOTIFY_PROC,      grab,
  883. X        NULL);
  884. X
  885. X    window_fit(panel);
  886. X    window_fit(frame);
  887. X    xv_main_loop(frame);
  888. X}
  889. X
  890. X/*
  891. X * notify procedure for when the "Fullscreen" button is pushed.
  892. X * Create a fullscreen instance, scan for a button event, then
  893. X * destroy it.
  894. X */
  895. Xvoid
  896. Xgrab(item, event)
  897. XPanel_item item;
  898. XEvent *event;
  899. X{
  900. X    Panel       panel = (Panel)xv_get(item, PANEL_PARENT_PANEL);
  901. X    Fullscreen  fs;
  902. X    Inputmask   im;
  903. X
  904. X    /* set up an input mask for the call to xv_input_readevent(). */
  905. X    win_setinputcodebit(&im, MS_LEFT);
  906. X    win_setinputcodebit(&im, MS_MIDDLE);
  907. X    win_setinputcodebit(&im, MS_RIGHT);
  908. X    win_setinputcodebit(&im, LOC_MOVE);
  909. X
  910. X    /*
  911. X     * Create a fullscreen object (initialize X server grab).
  912. X     * Specify which events should be allowed to pass through.
  913. X     * These events should match the input mask coded above.
  914. X     */
  915. X    fs = xv_create(panel, FULLSCREEN,
  916. X        WIN_CONSUME_EVENTS,
  917. X            WIN_MOUSE_BUTTONS, LOC_MOVE, NULL,
  918. X        NULL);
  919. X
  920. X    /* loop till user generates a button event */
  921. X    while (xv_input_readevent(panel, event, TRUE, TRUE, &im) != -1)
  922. X        if (event_is_button(event))
  923. X            break;
  924. X
  925. X    /* destroy the fullscreen (release the X server grab) */
  926. X    xv_destroy(fs);
  927. X
  928. X    /* report which button was pushed. */
  929. X    printf("event was button %d\n", event_id(event) - BUT_FIRST + 1);
  930. X}
  931. END_OF_FILE
  932. if test 2150 -ne `wc -c <'xview.demos/misc/fullscreen.c'`; then
  933.     echo shar: \"'xview.demos/misc/fullscreen.c'\" unpacked with wrong size!
  934. fi
  935. # end of 'xview.demos/misc/fullscreen.c'
  936. fi
  937. if test -f 'xview.demos/notice/trigger_notice.c' -a "${1}" != "-c" ; then 
  938.   echo shar: Will not clobber existing file \"'xview.demos/notice/trigger_notice.c'\"
  939. else
  940. echo shar: Extracting \"'xview.demos/notice/trigger_notice.c'\" \(2053 characters\)
  941. sed "s/^X//" >'xview.demos/notice/trigger_notice.c' <<'END_OF_FILE'
  942. X/*
  943. X * trigger_notice.c -- Demonstrate the use of triggers in notices.
  944. X */
  945. X#include <xview/xview.h>
  946. X#include <xview/panel.h>
  947. X#include <xview/notice.h>
  948. X
  949. Xmain(argc,argv)
  950. Xint     argc;
  951. Xchar    *argv[];
  952. X{
  953. X    Frame       frame;
  954. X    Panel       panel;
  955. X    Xv_opaque   my_notify_proc();
  956. X    extern void exit();
  957. X
  958. X    /*
  959. X     * Initialize XView, create a frame, a panel and one panel button.
  960. X     */
  961. X    xv_init(XV_INIT_ARGS, argc, argv, NULL);
  962. X    frame = (Frame)xv_create(XV_NULL, FRAME, NULL);
  963. X    panel = (Panel)xv_create(frame, PANEL, NULL);
  964. X    (void) xv_create(panel, PANEL_BUTTON,
  965. X        PANEL_LABEL_STRING,     "Quit",
  966. X        PANEL_NOTIFY_PROC,      exit,
  967. X        NULL);
  968. X    (void) xv_create(panel, PANEL_BUTTON,
  969. X        PANEL_LABEL_STRING,     "Move",
  970. X        PANEL_NOTIFY_PROC,      my_notify_proc,
  971. X        NULL);
  972. X
  973. X    /* make sure everything looks good */
  974. X    window_fit(panel);
  975. X    window_fit(frame);
  976. X
  977. X    /* start window event processing */
  978. X    xv_main_loop(frame);
  979. X}
  980. X
  981. X/*
  982. X * my_notify_proc() -- called when the user selects the "Move"
  983. X * panel button.  Put up a notice_prompt to get new coordinates
  984. X * to move the main window.
  985. X */
  986. XXv_opaque
  987. Xmy_notify_proc(item, event)
  988. XPanel_item  item;
  989. XEvent      *event;
  990. X{
  991. X    int         result, x, y;
  992. X    Panel       panel = (Panel)xv_get(item, PANEL_PARENT_PANEL);
  993. X    Frame       frame = (Frame)xv_get(panel, XV_OWNER);
  994. X
  995. X    x = event_x(event), y = event_y(event);
  996. X    printf("original click relative to panel: %d, %d\n", x, y);
  997. X    result = notice_prompt(panel, event,
  998. X        NOTICE_MESSAGE_STRINGS,
  999. X            "You may move the window to a new location specified by",
  1000. X            "clicking the Left Mouse Button somewhere on the screen.",
  1001. X            NULL,
  1002. X        NOTICE_TRIGGER,         MS_LEFT,
  1003. X        NOTICE_NO_BEEPING,      TRUE,
  1004. X        NULL);
  1005. X
  1006. X    if (result == NOTICE_TRIGGERED) {
  1007. X        x += event_x(event) + (int)xv_get(frame, XV_X);
  1008. X        y += event_y(event) + (int)xv_get(frame, XV_Y);
  1009. X        printf("screen x,y: %d, %d\n", x, y);
  1010. X        xv_set(frame, XV_X, x, XV_Y, y, NULL);
  1011. X    }
  1012. X}
  1013. END_OF_FILE
  1014. if test 2053 -ne `wc -c <'xview.demos/notice/trigger_notice.c'`; then
  1015.     echo shar: \"'xview.demos/notice/trigger_notice.c'\" unpacked with wrong size!
  1016. fi
  1017. # end of 'xview.demos/notice/trigger_notice.c'
  1018. fi
  1019. if test -f 'xview.demos/notifier/animate.c' -a "${1}" != "-c" ; then 
  1020.   echo shar: Will not clobber existing file \"'xview.demos/notifier/animate.c'\"
  1021. else
  1022. echo shar: Extracting \"'xview.demos/notifier/animate.c'\" \(3951 characters\)
  1023. sed "s/^X//" >'xview.demos/notifier/animate.c' <<'END_OF_FILE'
  1024. X/*
  1025. X * animate.c -- use glyphs from the "icon" font distributed with XView
  1026. X * to do frame-by-frame animation.
  1027. X */
  1028. X#include <stdio.h>
  1029. X#include <ctype.h>
  1030. X#include <X11/X.h>
  1031. X#include <X11/Xlib.h>
  1032. X#include <X11/Xos.h>            /* for <sys/time.h> */
  1033. X#include <xview/xview.h>
  1034. X#include <xview/panel.h>
  1035. X#include <xview/font.h>
  1036. X#include <xview/notify.h>
  1037. X
  1038. XFrame            frame;
  1039. XDisplay          *dpy;
  1040. XGC               gc;
  1041. XWindow           canvas_win;
  1042. XNotify_value     animate();
  1043. Xstruct itimerval timer;
  1044. X
  1045. X#define ArraySize(x)  (sizeof(x)/sizeof(x[0]))
  1046. Xchar *horses[] = { "N", "O", "P", "Q", "R" };
  1047. Xchar *boys[] = { "\007", "\005", "\007", "\010" };
  1048. Xchar *men[] = { "\\", "]", "Y", "Z", "[" };
  1049. Xchar *eyes[] = {
  1050. X    "2", "5", "4", "3", "4", "5",
  1051. X    "2", "1", "0", "/", "0", "1"
  1052. X};
  1053. X
  1054. Xint max_images = ArraySize(horses);
  1055. Xchar **images = horses;
  1056. Xint cnt;
  1057. X
  1058. Xmain(argc, argv)
  1059. Xint     argc;
  1060. Xchar    *argv[];
  1061. X{
  1062. X    Panel       panel;
  1063. X    Canvas      canvas;
  1064. X    XGCValues   gcvalues;
  1065. X    Xv_Font     _font;
  1066. X    XFontStruct *font;
  1067. X    void        adjust_speed(), change_glyph();
  1068. X    extern void exit();
  1069. X
  1070. X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
  1071. X
  1072. X    frame = (Frame)xv_create(XV_NULL, FRAME,
  1073. X        FRAME_LABEL,            argv[0],
  1074. X        FRAME_SHOW_FOOTER,      TRUE,
  1075. X        NULL);
  1076. X
  1077. X    panel = (Panel)xv_create(frame, PANEL,
  1078. X        PANEL_LAYOUT,           PANEL_VERTICAL,
  1079. X        NULL);
  1080. X    xv_create(panel, PANEL_BUTTON,
  1081. X        PANEL_LABEL_STRING,     "Quit",
  1082. X        PANEL_NOTIFY_PROC,      exit,
  1083. X        NULL);
  1084. X    xv_create(panel, PANEL_SLIDER,
  1085. X        PANEL_LABEL_STRING,     "Millisecs Between Frames",
  1086. X        PANEL_VALUE,            0,
  1087. X        PANEL_MAX_VALUE,        120,
  1088. X        PANEL_NOTIFY_PROC,      adjust_speed,
  1089. X        NULL);
  1090. X    xv_create(panel, PANEL_CHOICE,
  1091. X        PANEL_LABEL_STRING,     "Glyphs",
  1092. X        PANEL_LAYOUT,           PANEL_HORIZONTAL,
  1093. X        PANEL_DISPLAY_LEVEL,    PANEL_ALL,
  1094. X        PANEL_CHOICE_STRINGS,   "Horse", "Man", "Boy", "Eye", NULL,
  1095. X        PANEL_NOTIFY_PROC,      change_glyph,
  1096. X        NULL);
  1097. X    window_fit(panel);
  1098. X
  1099. X    canvas = (Canvas)xv_create(frame, CANVAS,
  1100. X        XV_WIDTH,               64,
  1101. X        XV_HEIGHT,              64,
  1102. X        CANVAS_X_PAINT_WINDOW,  TRUE,
  1103. X        NULL);
  1104. X    canvas_win = (Window)xv_get(canvas_paint_window(canvas), XV_XID);
  1105. X
  1106. X    window_fit(frame);
  1107. X
  1108. X    dpy = (Display *)xv_get(frame, XV_DISPLAY);
  1109. X    _font = (Xv_Font)xv_find(frame, FONT,
  1110. X        FONT_NAME,      "icon",
  1111. X        NULL);
  1112. X    font = (XFontStruct *)xv_get(_font, FONT_INFO);
  1113. X
  1114. X    gcvalues.font = font->fid;
  1115. X    gcvalues.foreground = BlackPixel(dpy, DefaultScreen(dpy));
  1116. X    gcvalues.background = WhitePixel(dpy, DefaultScreen(dpy));
  1117. X    gcvalues.graphics_exposures = False;
  1118. X    gc = XCreateGC(dpy, RootWindow(dpy, DefaultScreen(dpy)),
  1119. X        GCForeground | GCBackground | GCFont | GCGraphicsExposures,
  1120. X        &gcvalues);
  1121. X
  1122. X    xv_main_loop(frame);
  1123. X}
  1124. X
  1125. Xvoid
  1126. Xchange_glyph(item, value)
  1127. XPanel_item item;
  1128. Xint value;
  1129. X{
  1130. X    cnt = 0;
  1131. X    if (value == 0) {
  1132. X        max_images = ArraySize(horses);
  1133. X        images = horses;
  1134. X    } else if (value == 1) {
  1135. X        max_images = ArraySize(men);
  1136. X        images = men;
  1137. X    } else if (value == 2) {
  1138. X        max_images = ArraySize(boys);
  1139. X        images = boys;
  1140. X    } else if (value == 3) {
  1141. X        max_images = ArraySize(eyes);
  1142. X        images = eyes;
  1143. X    }
  1144. X    XClearWindow(dpy, canvas_win);
  1145. X}
  1146. X
  1147. X/*ARGSUSED*/
  1148. XNotify_value
  1149. Xanimate()
  1150. X{
  1151. X    XDrawImageString(dpy, canvas_win, gc, 5, 40, images[cnt], 1);
  1152. X    cnt = (cnt + 1) % max_images;
  1153. X
  1154. X    return NOTIFY_DONE;
  1155. X}
  1156. X
  1157. Xvoid
  1158. Xadjust_speed(item, value)
  1159. XPanel_item item;
  1160. Xint value;
  1161. X{
  1162. X    if (value > 0) {
  1163. X        timer.it_value.tv_usec = (value + 20) * 1000;
  1164. X        timer.it_interval.tv_usec = (value + 20) * 1000;
  1165. X        notify_set_itimer_func(frame, animate,
  1166. X            ITIMER_REAL, &timer, NULL);
  1167. X    } else
  1168. X        /* turn it off */
  1169. X        notify_set_itimer_func(frame, NOTIFY_FUNC_NULL,
  1170. X            ITIMER_REAL, NULL, NULL);
  1171. X}
  1172. END_OF_FILE
  1173. if test 3951 -ne `wc -c <'xview.demos/notifier/animate.c'`; then
  1174.     echo shar: \"'xview.demos/notifier/animate.c'\" unpacked with wrong size!
  1175. fi
  1176. # end of 'xview.demos/notifier/animate.c'
  1177. fi
  1178. if test -f 'xview.demos/panels/Imakefile' -a "${1}" != "-c" ; then 
  1179.   echo shar: Will not clobber existing file \"'xview.demos/panels/Imakefile'\"
  1180. else
  1181. echo shar: Extracting \"'xview.demos/panels/Imakefile'\" \(753 characters\)
  1182. sed "s/^X//" >'xview.demos/panels/Imakefile' <<'END_OF_FILE'
  1183. X#
  1184. X# @(#)Imakefile 1.3 89/12/06 SMI
  1185. X#
  1186. X# Imakefile for panels
  1187. X#
  1188. X# LIBRARY_DEST is the location of the XView libraries
  1189. X# HEADER_DEST is the location of the XView header files
  1190. X# LIBDIR is the directory containing the X11 library (libX11.a)
  1191. X#
  1192. X
  1193. XLIBRARY_DEST=/home/xview/usr/lib
  1194. XHEADER_DEST=/home/xview/usr/include
  1195. X
  1196. XLIBDIR=/home/X11/lib
  1197. XLDFLAGS=-L$(LIBRARY_DEST) -L$(LIBDIR) -lxview -lX11
  1198. XINCLUDES= -I.. -I$(HEADER_DEST) -I$(TOP) -DSTANDALONE
  1199. X
  1200. X# Uncomment the following line to use libxvol.a and libxvin.a
  1201. X#
  1202. X#LDFLAGS=-L$(LIBRARY_DEST) -L$(LIBDIR) -lxvol -lxvin -lX11
  1203. X
  1204. XTARGETS=btn_menu choices client_data item_move list_glyphs \
  1205. X        panel_repaint repaint simple_panel stop_frame
  1206. X
  1207. Xall: $(TARGETS)
  1208. X
  1209. X${TARGETS}: $$@.c $$@.o 
  1210. X    ${CC} ${CFLAGS} ${LDFLAGS} -o $@ $@.o 
  1211. END_OF_FILE
  1212. if test 753 -ne `wc -c <'xview.demos/panels/Imakefile'`; then
  1213.     echo shar: \"'xview.demos/panels/Imakefile'\" unpacked with wrong size!
  1214. fi
  1215. # end of 'xview.demos/panels/Imakefile'
  1216. fi
  1217. if test -f 'xview.demos/panels/list_glyphs.c' -a "${1}" != "-c" ; then 
  1218.   echo shar: Will not clobber existing file \"'xview.demos/panels/list_glyphs.c'\"
  1219. else
  1220. echo shar: Extracting \"'xview.demos/panels/list_glyphs.c'\" \(2414 characters\)
  1221. sed "s/^X//" >'xview.demos/panels/list_glyphs.c' <<'END_OF_FILE'
  1222. X/*
  1223. X * list.c -- show a scrolling list with three items in it.
  1224. X * Each item is an icon (a pattern) and a string.
  1225. X */
  1226. X#include <xview/xview.h>
  1227. X#include <xview/panel.h>
  1228. X#include <xview/svrimage.h>
  1229. X
  1230. X#define gray1_width 16
  1231. X#define gray1_height 16
  1232. Xstatic char gray1_bits[] = {
  1233. X    0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55,
  1234. X    0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa,
  1235. X    0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55,
  1236. X    0xaa, 0xaa
  1237. X};
  1238. X
  1239. X#define gray2_width 16
  1240. X#define gray2_height 16
  1241. Xstatic char gray2_bits[] = {
  1242. X    0x11, 0x11, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, 0x11, 0x11,
  1243. X    0x00, 0x00, 0x44, 0x44, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00,
  1244. X    0x44, 0x44, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x44, 0x44,
  1245. X    0x00, 0x00
  1246. X};
  1247. X
  1248. X#define gray3_width 16
  1249. X#define gray3_height 16
  1250. Xstatic char gray3_bits[] = {
  1251. X    0x22, 0x22, 0xee, 0xee, 0x33, 0x33, 0xee, 0xee, 0x22, 0x22,
  1252. X    0xee, 0xee, 0x33, 0x33, 0xee, 0xee, 0x22, 0x22, 0xee, 0xee,
  1253. X    0x33, 0x33, 0xee, 0xee, 0x22, 0x22, 0xee, 0xee, 0x33, 0x33,
  1254. X    0xee, 0xee
  1255. X};
  1256. X
  1257. Xmain(argc, argv)
  1258. Xint     argc;
  1259. Xchar    *argv[];
  1260. X{
  1261. X    Frame       frame;
  1262. X    Panel       panel;
  1263. X    Server_image gray1, gray2, gray3;
  1264. X    extern void exit();
  1265. X
  1266. X    xv_init(XV_INIT_ARGS, argc, argv, NULL);
  1267. X
  1268. X    gray1 = (Server_image)xv_create(NULL, SERVER_IMAGE,
  1269. X        XV_WIDTH,               gray1_width,
  1270. X        XV_HEIGHT,              gray1_height,
  1271. X        SERVER_IMAGE_BITS,      gray1_bits,
  1272. X        NULL);
  1273. X    gray2 = (Server_image)xv_create(NULL, SERVER_IMAGE,
  1274. X        XV_WIDTH,               gray2_width,
  1275. X        XV_HEIGHT,              gray2_height,
  1276. X        SERVER_IMAGE_BITS,      gray2_bits,
  1277. X        NULL);
  1278. X    gray3 = (Server_image)xv_create(NULL, SERVER_IMAGE,
  1279. X        XV_WIDTH,               gray3_width,
  1280. X        XV_HEIGHT,              gray3_height,
  1281. X        SERVER_IMAGE_BITS,      gray3_bits,
  1282. X        NULL);
  1283. X    frame = (Frame)xv_create(NULL, FRAME, NULL);
  1284. X    panel = (Panel)xv_create(frame, PANEL, NULL);
  1285. X
  1286. X    (void) xv_create(panel, PANEL_BUTTON,
  1287. X        PANEL_LABEL_STRING,     "quit",
  1288. X        PANEL_NOTIFY_PROC,      exit,
  1289. X        NULL);
  1290. X
  1291. X    (void) xv_create(panel, PANEL_LIST,
  1292. X        PANEL_LIST_ROW_HEIGHT,  16,
  1293. X        PANEL_LIST_GLYPHS,      gray1, gray2, gray3, NULL,
  1294. X        PANEL_LIST_STRINGS,     "Pattern1", "Pattern2", "Pattern3", NULL,
  1295. X        NULL);
  1296. X
  1297. X    window_fit(panel);
  1298. X    window_fit(frame);
  1299. X
  1300. X    xv_main_loop(frame);
  1301. X}
  1302. END_OF_FILE
  1303. if test 2414 -ne `wc -c <'xview.demos/panels/list_glyphs.c'`; then
  1304.     echo shar: \"'xview.demos/panels/list_glyphs.c'\" unpacked with wrong size!
  1305. fi
  1306. # end of 'xview.demos/panels/list_glyphs.c'
  1307. fi
  1308. if test -f 'xview.demos/panels/panel_repaint.c' -a "${1}" != "-c" ; then 
  1309.   echo shar: Will not clobber existing file \"'xview.demos/panels/panel_repaint.c'\"
  1310. else
  1311. echo shar: Extracting \"'xview.demos/panels/panel_repaint.c'\" \(2626 characters\)
  1312. sed "s/^X//" >'xview.demos/panels/panel_repaint.c' <<'END_OF_FILE'
  1313. X/*
  1314. X * panel_repaint.c -- repaint a panel background without disturbing
  1315. X * the repainting of panel items.
  1316. X */
  1317. X#include <xview/xview.h>
  1318. X#include <xview/panel.h>
  1319. X#include <xview/svrimage.h>
  1320. X#include <X11/Xlib.h>
  1321. X#include <X11/X.h>
  1322. X#include <X11/bitmaps/gray1>
  1323. X
  1324. X#define PANEL_GC_KEY    101  /* any arbitrary number */
  1325. X
  1326. Xmain(argc, argv)
  1327. Xint argc;
  1328. Xchar *argv[];
  1329. X{
  1330. X    Display     *display;
  1331. X    Frame        frame;
  1332. X    Panel        panel;
  1333. X    int          quit();
  1334. X    void         panel_repaint();
  1335. X    XGCValues    gcvalues;
  1336. X    Server_image grey;
  1337. X
  1338. X    Mask        gcmask = 0L;
  1339. X    GC          gc;
  1340. X
  1341. X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
  1342. X
  1343. X    frame = (Frame)xv_create(XV_NULL, FRAME, NULL);
  1344. X    panel = (Panel)xv_create(frame, PANEL,
  1345. X        PANEL_REPAINT_PROC,     panel_repaint,
  1346. X        NULL);
  1347. X
  1348. X    (void) xv_create(panel, PANEL_BUTTON,
  1349. X        PANEL_LABEL_STRING,     "Quit",
  1350. X        PANEL_NOTIFY_PROC,      quit,
  1351. X        PANEL_CLIENT_DATA,      frame,
  1352. X        NULL);
  1353. X
  1354. X    window_fit(frame);
  1355. X
  1356. X    grey = (Server_image)xv_create(NULL, SERVER_IMAGE,
  1357. X        XV_WIDTH,               gray1_width,
  1358. X        XV_HEIGHT,              gray1_height,
  1359. X        SERVER_IMAGE_DEPTH,     1, /* clarify for completeness*/
  1360. X        SERVER_IMAGE_BITS,      gray1_bits,
  1361. X        NULL);
  1362. X
  1363. X    display = (Display *)xv_get(panel, XV_DISPLAY);
  1364. X    gcvalues.stipple = (Pixmap) xv_get(grey, XV_XID);
  1365. X    gcvalues.fill_style = FillOpaqueStippled;
  1366. X    gcvalues.plane_mask = 1L;
  1367. X    gcvalues.graphics_exposures = False;
  1368. X    gcvalues.foreground = BlackPixel(display, DefaultScreen(display));
  1369. X    gcvalues.background = WhitePixel(display, DefaultScreen(display));
  1370. X    gcmask = GCStipple | GCFillStyle | GCPlaneMask |
  1371. X        GCGraphicsExposures | GCForeground | GCBackground;
  1372. X    gc = XCreateGC(display, xv_get(panel, XV_XID), gcmask, &gcvalues);
  1373. X
  1374. X    /* attach the GC to the panel for use by the repaint proc above */
  1375. X    xv_set(panel, XV_KEY_DATA, PANEL_GC_KEY, gc, NULL);
  1376. X
  1377. X    xv_main_loop(frame);
  1378. X    exit(0);
  1379. X}
  1380. X
  1381. X/*
  1382. X * repaint procedure for the panel paints a gray pattern over the
  1383. X * entire panel.  Use the GC attached to the panel via XV_KEY_DATA.
  1384. X */
  1385. Xvoid
  1386. Xpanel_repaint(panel, pw)
  1387. XPanel panel;
  1388. XXv_Window pw;
  1389. X{
  1390. X    /* get the GC attached to the panel in main() */
  1391. X    GC gc = (GC)xv_get(panel, XV_KEY_DATA, PANEL_GC_KEY);
  1392. X
  1393. X    /* call XFillRectangle on the entire size of the panel window */
  1394. X    XFillRectangle(xv_get(panel, XV_DISPLAY), xv_get(pw, XV_XID), gc,
  1395. X        0, 0, xv_get(pw, XV_WIDTH), xv_get(pw, XV_HEIGHT));
  1396. X}
  1397. X
  1398. Xquit(item)
  1399. XPanel_item item;
  1400. X{
  1401. X    Frame frame = (Frame)xv_get(item, PANEL_CLIENT_DATA);
  1402. X    xv_destroy_safe(frame);
  1403. X}
  1404. END_OF_FILE
  1405. if test 2626 -ne `wc -c <'xview.demos/panels/panel_repaint.c'`; then
  1406.     echo shar: \"'xview.demos/panels/panel_repaint.c'\" unpacked with wrong size!
  1407. fi
  1408. # end of 'xview.demos/panels/panel_repaint.c'
  1409. fi
  1410. if test -f 'xview.demos/seln_svc/seln_line.c' -a "${1}" != "-c" ; then 
  1411.   echo shar: Will not clobber existing file \"'xview.demos/seln_svc/seln_line.c'\"
  1412. else
  1413. echo shar: Extracting \"'xview.demos/seln_svc/seln_line.c'\" \(2643 characters\)
  1414. sed "s/^X//" >'xview.demos/seln_svc/seln_line.c' <<'END_OF_FILE'
  1415. X/*
  1416. X * line_num.c -- demonstrate how to use the selection service to get
  1417. X * the line number of the primary selection in a textsw.
  1418. X */
  1419. X#include <stdio.h>
  1420. X#include <xview/xview.h>
  1421. X#include <xview/textsw.h>
  1422. X#include <xview/panel.h>
  1423. X#include <xview/seln.h>
  1424. X
  1425. XTextsw  textsw;
  1426. X
  1427. Xmain(argc, argv)
  1428. Xchar *argv[];
  1429. X{
  1430. X    Frame       frame;
  1431. X    Panel       panel;
  1432. X    void        exit();
  1433. X    int         seln_proc();
  1434. X
  1435. X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
  1436. X
  1437. X    frame = (Frame)xv_create(NULL, FRAME,
  1438. X        FRAME_SHOW_FOOTER,      TRUE,
  1439. X        NULL);
  1440. X
  1441. X    panel = (Panel)xv_create(frame, PANEL,
  1442. X        WIN_WIDTH,              WIN_EXTEND_TO_EDGE,
  1443. X        NULL);
  1444. X
  1445. X    (void) xv_create(panel, PANEL_BUTTON,
  1446. X        PANEL_LABEL_STRING,     "Quit",
  1447. X        PANEL_NOTIFY_PROC,      exit,
  1448. X        NULL);
  1449. X    (void) xv_create(panel, PANEL_BUTTON,
  1450. X        PANEL_LABEL_STRING,     "Get Selection",
  1451. X        PANEL_NOTIFY_PROC,      seln_proc,
  1452. X        PANEL_CLIENT_DATA,      frame,
  1453. X        NULL);
  1454. X    (void) xv_create(panel, PANEL_TEXT,
  1455. X        PANEL_LABEL_STRING,             "No-op:",
  1456. X        PANEL_VALUE_DISPLAY_LENGTH,     30,
  1457. X        NULL);
  1458. X
  1459. X    window_fit(panel);
  1460. X
  1461. X    textsw = (Textsw)xv_create(frame, TEXTSW,
  1462. X        WIN_X,                  0,
  1463. X        WIN_BELOW,              panel,
  1464. X        WIN_ROWS,               10,
  1465. X        WIN_COLUMNS,            80,
  1466. X        TEXTSW_FILE_CONTENTS,   "/etc/passwd",
  1467. X        NULL);
  1468. X    window_fit(frame);
  1469. X    xv_main_loop(frame);
  1470. X}
  1471. X
  1472. Xint
  1473. Xseln_proc(item, event)
  1474. XPanel_item item;
  1475. XEvent *event; /* unused */
  1476. X{
  1477. X    Frame         frame = (Frame)xv_get(item, PANEL_CLIENT_DATA);
  1478. X    Seln_holder   holder;
  1479. X    Seln_request *buffer;
  1480. X    int           line_number;
  1481. X    char         *msg[32];
  1482. X
  1483. X    /* 
  1484. X     * get primary selection 
  1485. X     */
  1486. X    holder = seln_inquire(SELN_PRIMARY);
  1487. X    /* 
  1488. X     * ask for the data containing line number of the first
  1489. X     * character of the selection
  1490. X     */
  1491. X    buffer = seln_ask(&holder,
  1492. X        SELN_REQ_FAKE_LEVEL, SELN_LEVEL_LINE,
  1493. X        SELN_REQ_FIRST_UNIT, 0,
  1494. X        NULL);
  1495. X    /*
  1496. X     * determine the window that contains the selection
  1497. X     */
  1498. X    if (seln_holder_same_client(&holder, textsw)) {
  1499. X        xv_set(frame,
  1500. X            FRAME_LEFT_FOOTER, "selection in textsw",
  1501. X            NULL);
  1502. X        /* 
  1503. X         * convert data into the line number 
  1504. X         */
  1505. X        sprintf(msg, "Selection: line %ld",
  1506. X            *(long *)(buffer->data + 3 * sizeof(Seln_attribute)));
  1507. X        xv_set(frame,
  1508. X            FRAME_RIGHT_FOOTER, msg,
  1509. X            NULL);
  1510. X    } else
  1511. X        xv_set(frame,
  1512. X            FRAME_LEFT_FOOTER, "selection elsewhere",
  1513. X            NULL);
  1514. X
  1515. X    return XV_OK;
  1516. X}
  1517. END_OF_FILE
  1518. if test 2643 -ne `wc -c <'xview.demos/seln_svc/seln_line.c'`; then
  1519.     echo shar: \"'xview.demos/seln_svc/seln_line.c'\" unpacked with wrong size!
  1520. fi
  1521. # end of 'xview.demos/seln_svc/seln_line.c'
  1522. fi
  1523. if test -f 'xview.demos/seln_svc/simple_seln.c' -a "${1}" != "-c" ; then 
  1524.   echo shar: Will not clobber existing file \"'xview.demos/seln_svc/simple_seln.c'\"
  1525. else
  1526. echo shar: Extracting \"'xview.demos/seln_svc/simple_seln.c'\" \(1913 characters\)
  1527. sed "s/^X//" >'xview.demos/seln_svc/simple_seln.c' <<'END_OF_FILE'
  1528. X/*
  1529. X * seln.c -- print the primary selection by pressing the panel 
  1530. X * button.  The selection may have originated from any window or
  1531. X * application on the server.
  1532. X */
  1533. X#include <stdio.h>
  1534. X#include <xview/xview.h>
  1535. X#include <xview/panel.h>
  1536. X#include <xview/server.h>
  1537. X#include <xview/seln.h>
  1538. X
  1539. XXv_Server server;
  1540. X
  1541. Xmain(argc, argv)
  1542. Xchar *argv[];
  1543. X{
  1544. X    Frame       frame;
  1545. X    Panel       panel;
  1546. X    void        exit();
  1547. X    int         print_seln();
  1548. X
  1549. X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
  1550. X
  1551. X    frame = (Frame) xv_create(NULL, FRAME,
  1552. X        FRAME_LABEL,            argv[0],
  1553. X        NULL);
  1554. X    panel = (Panel)xv_create(frame, PANEL,
  1555. X        WIN_WIDTH,              WIN_EXTEND_TO_EDGE,
  1556. X        NULL);
  1557. X    (void) xv_create(panel, PANEL_BUTTON,
  1558. X        PANEL_LABEL_STRING,     "Quit",
  1559. X        PANEL_NOTIFY_PROC,      exit,
  1560. X        NULL);
  1561. X    (void) xv_create(panel, PANEL_BUTTON,
  1562. X        PANEL_LABEL_STRING,     "Print Selection",
  1563. X        PANEL_NOTIFY_PROC,      print_seln,
  1564. X        NULL);
  1565. X    window_fit(panel);
  1566. X    window_fit(frame);
  1567. X
  1568. X    server = (Xv_Server)xv_get(xv_get(frame, XV_SCREEN), SCREEN_SERVER);
  1569. X
  1570. X    xv_main_loop(frame);
  1571. X}
  1572. X
  1573. X/*
  1574. X * Get the selection using selection_ask().  Note that if the 
  1575. X * selection is bigger than about 2K, the whole selection will
  1576. X * not be gotten with one call, thus this method of getting
  1577. X * the selection may not be sufficient for all situations.
  1578. X */
  1579. Xint
  1580. Xprint_seln(item, event)
  1581. XPanel_item item;
  1582. XEvent *event;
  1583. X{
  1584. X    Seln_holder         holder;
  1585. X    Seln_request        *response;
  1586. X    char                text[BUFSIZ];
  1587. X
  1588. X    /* get the holder of the primary selection */
  1589. X    holder = selection_inquire(server, SELN_PRIMARY);
  1590. X    response = selection_ask(server, &holder,
  1591. X        SELN_REQ_CONTENTS_ASCII, NULL,
  1592. X        NULL);
  1593. X
  1594. X    strcpy(text, response->data + sizeof (SELN_REQ_CONTENTS_ASCII));
  1595. X    printf("---selection---\n%s\n---end seln---\n", text);
  1596. X
  1597. X    return XV_OK;
  1598. X}
  1599. END_OF_FILE
  1600. if test 1913 -ne `wc -c <'xview.demos/seln_svc/simple_seln.c'`; then
  1601.     echo shar: \"'xview.demos/seln_svc/simple_seln.c'\" unpacked with wrong size!
  1602. fi
  1603. # end of 'xview.demos/seln_svc/simple_seln.c'
  1604. fi
  1605. if test -f 'xview.demos/sv_compat/gray_stencil.pr' -a "${1}" != "-c" ; then 
  1606.   echo shar: Will not clobber existing file \"'xview.demos/sv_compat/gray_stencil.pr'\"
  1607. else
  1608. echo shar: Extracting \"'xview.demos/sv_compat/gray_stencil.pr'\" \(1997 characters\)
  1609. sed "s/^X//" >'xview.demos/sv_compat/gray_stencil.pr' <<'END_OF_FILE'
  1610. X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
  1611. X */
  1612. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1613. X    0x5555,0x5555,0x5555,0x5555,
  1614. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1615. X    0x5555,0x5555,0x5555,0x5555,
  1616. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1617. X    0x5555,0x5555,0x5555,0x5555,
  1618. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1619. X    0x5555,0x5555,0x5555,0x5555,
  1620. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1621. X    0x5555,0x5555,0x5555,0x5555,
  1622. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1623. X    0x5555,0x5555,0x5555,0x5555,
  1624. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1625. X    0x5555,0x5555,0x5555,0x5555,
  1626. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1627. X    0x5555,0x5555,0x5555,0x5555,
  1628. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1629. X    0x5555,0x5555,0x5555,0x5555,
  1630. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1631. X    0x5555,0x5555,0x5555,0x5555,
  1632. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1633. X    0x5555,0x5555,0x5555,0x5555,
  1634. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1635. X    0x5555,0x5555,0x5555,0x5555,
  1636. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1637. X    0x5555,0x5555,0x5555,0x5555,
  1638. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1639. X    0x5555,0x5555,0x5555,0x5555,
  1640. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1641. X    0x5555,0x5555,0x5555,0x5555,
  1642. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1643. X    0x5555,0x5555,0x5555,0x5555,
  1644. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1645. X    0x5555,0x5555,0x5555,0x5555,
  1646. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1647. X    0x5555,0x5555,0x5555,0x5555,
  1648. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1649. X    0x5555,0x5555,0x5555,0x5555,
  1650. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1651. X    0x5555,0x5555,0x5555,0x5555,
  1652. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1653. X    0x5555,0x5555,0x5555,0x5555,
  1654. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1655. X    0x5555,0x5555,0x5555,0x5555,
  1656. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1657. X    0x5555,0x5555,0x5555,0x5555,
  1658. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1659. X    0x5555,0x5555,0x5555,0x5555,
  1660. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1661. X    0x5555,0x5555,0x5555,0x5555,
  1662. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1663. X    0x5555,0x5555,0x5555,0x5555,
  1664. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1665. X    0x5555,0x5555,0x5555,0x5555,
  1666. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1667. X    0x5555,0x5555,0x5555,0x5555,
  1668. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1669. X    0x5555,0x5555,0x5555,0x5555,
  1670. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1671. X    0x5555,0x5555,0x5555,0x5555,
  1672. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1673. X    0x5555,0x5555,0x5555,0x5555,
  1674. X    0xAAAA,0xAAAA,0xAAAA,0xAAAA,
  1675. X    0x5555,0x5555,0x5555,0x5555
  1676. END_OF_FILE
  1677. if test 1997 -ne `wc -c <'xview.demos/sv_compat/gray_stencil.pr'`; then
  1678.     echo shar: \"'xview.demos/sv_compat/gray_stencil.pr'\" unpacked with wrong size!
  1679. fi
  1680. # end of 'xview.demos/sv_compat/gray_stencil.pr'
  1681. fi
  1682. if test -f 'xview.demos/sv_compat/pw_draw.c' -a "${1}" != "-c" ; then 
  1683.   echo shar: Will not clobber existing file \"'xview.demos/sv_compat/pw_draw.c'\"
  1684. else
  1685. echo shar: Extracting \"'xview.demos/sv_compat/pw_draw.c'\" \(3909 characters\)
  1686. sed "s/^X//" >'xview.demos/sv_compat/pw_draw.c' <<'END_OF_FILE'
  1687. X/*
  1688. X * Name:    pw_draw.c
  1689. X *
  1690. X * Description:
  1691. X *    Demonstrates some of the pixwin drawing functions on
  1692. X *    a canvas window. The drawing is done inside a repaint proc.
  1693. X *    XView (and X11) applications must always be prepared to
  1694. X *    repaint themselves on demand.    
  1695. X *
  1696. X * Note: XView doesn't really support pw_* graphics calls.
  1697. X * These are leftover functions from Sunview and are shown here for
  1698. X * compatibility reference only.
  1699. X */
  1700. X
  1701. X#include <stdio.h>
  1702. X#include <xview/xview.h>
  1703. X#include <xview/canvas.h>
  1704. X#include <xview/svrimage.h>
  1705. X
  1706. Xstatic short chess_bits[] = {
  1707. X#include <images/chesstool.icon>
  1708. X};
  1709. X
  1710. Xstatic short gray_bits[] = {
  1711. X#include "gray_stencil.pr"
  1712. X};
  1713. X
  1714. XServer_image    chess_image;
  1715. XServer_image    stencil_image;
  1716. X
  1717. X/*
  1718. X *              main()
  1719. X *      Create frame and canvas windows.
  1720. X *      Set a repaint proc for the canvas window.
  1721. X *    Create Server Images for fill and stencil operations 
  1722. X *    in canvas_repaint_proc().
  1723. X *      Start the event loop.
  1724. X */
  1725. Xmain(argc,argv)
  1726. X    int        argc;
  1727. X    char    *argv[];
  1728. X{
  1729. X    Frame    frame;
  1730. X    Canvas  canvas;
  1731. X    void    canvas_repaint_proc();
  1732. X
  1733. X    xv_init(XV_INIT_ARGS, argc, argv, 0);
  1734. X
  1735. X    /* Create a frame and a canvas */
  1736. X    frame = xv_create(NULL, FRAME,
  1737. X              FRAME_LABEL,     "xv_canvas_pw_draw",
  1738. X              XV_WIDTH,     734,
  1739. X              XV_HEIGHT,     448,
  1740. X              0);
  1741. X
  1742. X    canvas = xv_create(frame, CANVAS,
  1743. X               CANVAS_REPAINT_PROC,    canvas_repaint_proc,
  1744. X               0);
  1745. X
  1746. X    /* By default, server images are created with depth 1 */
  1747. X    chess_image = xv_create(NULL,SERVER_IMAGE,
  1748. X                XV_WIDTH,        64,
  1749. X                XV_HEIGHT,        64,
  1750. X                SERVER_IMAGE_BITS,    chess_bits,
  1751. X                0);
  1752. X
  1753. X    stencil_image = xv_create(NULL,SERVER_IMAGE,
  1754. X                        XV_WIDTH,        64,
  1755. X                        XV_HEIGHT,        64,
  1756. X                        SERVER_IMAGE_BITS,    gray_bits,
  1757. X                        0);
  1758. X
  1759. X    xv_main_loop(frame);
  1760. X    return(0);
  1761. X}
  1762. X
  1763. X/*
  1764. X *              canvas_repaint_proc()
  1765. X *      Called to repaint the canvas window.  Draws into the window
  1766. X *      using various pixwin drawing functions.
  1767. X */
  1768. Xvoid
  1769. Xcanvas_repaint_proc(canvas, canvas_pw, repaint_area)
  1770. X    Canvas      canvas;
  1771. X    Pixwin       *canvas_pw;
  1772. X    Rectlist    *repaint_area;
  1773. X{
  1774. X    static    Pr_brush     brush = {5};
  1775. X    static    short         dashed[] = {5, 3, 0};
  1776. X    static    Pr_texture     tex = {dashed, 0, 0, 0, 0, 0, 0, 0 };
  1777. X    static    struct pr_pos     lines[] = {{0,0}, {64,0}, {0,64}, {64,64}};
  1778. X    static  struct pr_pos      points[] = {{0, 128}, {128, 128}, {64, 0}};
  1779. X    static    int        num_points[] = {3};
  1780. X
  1781. X    /* Rop the chess_image icon onto the canvas */
  1782. X    pw_text(canvas_pw, 64, 58, PIX_SRC, NULL, "pw_rop");
  1783. X    pw_rop(canvas_pw, 64, 64, 64, 64, PIX_SET, chess_image, 0, 0);
  1784. X
  1785. X    /* Draw the chess_image icon using the stencil_image as a mask */
  1786. X    pw_text(canvas_pw, 192, 58, PIX_SRC, NULL, "pw_stencil");
  1787. X    pw_stencil(canvas_pw, 192, 64, 64, 64, PIX_SRC, stencil_image, 0, 0,
  1788. X           chess_image, 0, 0);
  1789. X
  1790. X    /* Replicate the chess_image icon within the specified rectangle */
  1791. X    pw_text(canvas_pw, 352, 58, PIX_SRC, NULL,"pw_replrop");
  1792. X    pw_replrop(canvas_pw, 320, 64, 128, 128, PIX_SRC, chess_image, 0, 0);
  1793. X
  1794. X    /* Fill the specified polygon with the chess_image icon */
  1795. X    pw_text(canvas_pw, 542, 58, PIX_SRC, NULL,"pw_polygon_2");
  1796. X    pw_polygon_2(canvas_pw, 512, 64, 1, num_points, points, PIX_SRC, 
  1797. X             chess_image, 0, 0);
  1798. X
  1799. X    pw_text(canvas_pw, 64, 312, PIX_SRC, NULL, "pw_vector");
  1800. X    pw_vector(canvas_pw, 64, 320, 128, 384, PIX_SRC, 1);
  1801. X    pw_vector(canvas_pw, 64, 384, 128, 320, PIX_SRC, 1);
  1802. X    
  1803. X    /* Draw a dashed line with the specifed line pattern & thickness */
  1804. X    pw_text(canvas_pw, 192, 312, PIX_SRC, NULL, "pw_line");
  1805. X    pw_line(canvas_pw, 192, 320, 256, 384, &brush, &tex, PIX_SET);
  1806. X    pw_line(canvas_pw, 192, 384, 256, 320, &brush, &tex, PIX_SET);
  1807. X    
  1808. X    /* Draw a set of lines */
  1809. X    pw_text(canvas_pw, 320, 312, PIX_SRC, NULL, "pw_polyline");
  1810. X    pw_polyline(canvas_pw, 320, 320, 4, lines, POLY_CLOSE, NULL, NULL, PIX_SET);
  1811. X
  1812. X    /* Copy from one region of the canvas to another */
  1813. X    pw_text(canvas_pw, 512, 312, PIX_SRC, NULL, "pw_copy"); 
  1814. X    pw_copy(canvas_pw, 448, 320, 192, 64, PIX_SRC, canvas_pw, 400, 96);
  1815. X}
  1816. X
  1817. END_OF_FILE
  1818. if test 3909 -ne `wc -c <'xview.demos/sv_compat/pw_draw.c'`; then
  1819.     echo shar: \"'xview.demos/sv_compat/pw_draw.c'\" unpacked with wrong size!
  1820. fi
  1821. # end of 'xview.demos/sv_compat/pw_draw.c'
  1822. fi
  1823. echo shar: End of archive 4 \(of 6\).
  1824. cp /dev/null ark4isdone
  1825. MISSING=""
  1826. for I in 1 2 3 4 5 6 ; do
  1827.     if test ! -f ark${I}isdone ; then
  1828.     MISSING="${MISSING} ${I}"
  1829.     fi
  1830. done
  1831. if test "${MISSING}" = "" ; then
  1832.     echo You have unpacked all 6 archives.
  1833.     rm -f ark[1-9]isdone
  1834. else
  1835.     echo You still need to unpack the following archives:
  1836.     echo "        " ${MISSING}
  1837. fi
  1838. ##  End of shell archive.
  1839. exit 0
  1840.